import pymongo
from pymongo import MongoClient

from baiduspider.model import baiduItem


class  mongodb():
    url="mongodb://localhost:27017/"
    client = None
    mydb = None
    mycol=None
    def __init__(self):

        pass

    @classmethod
    def conns(cls,dbname):

        if mongodb.client is  None:

                mongodb.client=pymongo.MongoClient(mongodb.url)



        return mongodb.client[dbname]

    @classmethod
    def close(cls):
        if mongodb.client is None:
            mongodb.client = pymongo.MongoClient(mongodb.url)
        mongodb.client.close()
    @classmethod
    def getdb(cls,dbname):
        if mongodb.mydb is None:

                mongodb.mydb = mongodb.conns(dbname)

        return mongodb.mydb

    @classmethod
    def getCol(cls,dbname, colname):

        if mongodb.mydb is None:
            mongodb.mydb = mongodb.conns(dbname)
        if mongodb.mycol is None:
            mongodb.mycol = mongodb.mydb[colname]

        return mongodb.mycol

    @classmethod
    def save(cls,baseItem) -> object:
        # print(type(baseItem))

        # if 'baiduItem' in str(type(baseItem)) :
       mongodb.getCol(baseItem.dbname,baseItem.colname).insert_one(baseItem.__dict__)

    pass

    @classmethod
    def delete(cls, baseItem):
        # print(type(baseItem))

        # if 'baiduItem' in str(type(baseItem)) :
        mongodb.getCol(baseItem.dbname, baseItem.colname).delete_one(baseItem.__dict__)

    pass

    @classmethod
    def deleteByQuery(cls, queryJson,baseItem):
        # print(type(baseItem))

        # if 'baiduItem' in str(type(baseItem)) :
        mongodb.getCol(baseItem.dbname, baseItem.colname).delete_many(queryJson)

    pass
    @classmethod
    def queryByJsonCondition(cls, queryJson,baseItem):
        # print(type(baseItem))

        # if 'baiduItem' in str(type(baseItem)) :
        mongodb.getCol(baseItem.dbname, baseItem.colname).query(queryJson)

    pass

    @classmethod
    def find(cls, baseItem):
        # print(type(baseItem))

        # if 'baiduItem' in str(type(baseItem)) :
        mongodb.getCol(baseItem.dbname, baseItem.colname).find()

    pass


if __name__ == '__main__':
        mongodb.url="mongodb://localhost:27017/"
        db=mongodb.getdb('baidu')
        collist = db.list_collection_names()
        print(collist)
        print('ok')


